
namespace gen {

	template <typename S, typename FunctorT>
    template <typename InfoT>
	void
	square_bracket<S,FunctorT>::generate(InfoT & info) const
	{
		this->right().compute(this->left(), info);
	}

    template <typename DerivedT>
	template <class T>
	inline square_bracket< DerivedT, T >
	generator<DerivedT>::operator[](control_expr<T> const& f) const
    {
        return square_bracket< DerivedT, T >(derived(), f.derived());
    }

};

